昨天整理完程式後來寫api,這個api去呼叫lib/pdfWeather.py,先call CrawlerWeatherAPI(),先去跟天氣API要到資料,再傳到 PdfWeather()產生PDF,加在views.py
main/views.py,這邊多了get參數,locationsNameList,去選可以只顯示哪些行政區,是一個list,所以用request.GET.getlist()
def exportPdfWeather(request):
locationNameList = request.GET.getlist("locationNameList", [])
crawlerWeatherAPI = CrawlerWeatherAPI()
dataDictList = crawlerWeatherAPI.getCrawlerData(locationNameList)
pdfWeather = PdfWeather(dataDictList)
pdfWeather.export()
return JsonResponse({"msg": "success"})
main/urls.py,設定api/exportPdfWeather url
...
urlpatterns = [
path('api/exportPdfWeather/', views.exportPdfWeather),
...
]
完成後 網頁輸入 http://localhost:8000/api/exportPdfWeather/ ,就會看到success 的字,預設會產生在lib/example.pdf ,就完成了。
讓瀏覽器可以去看到這個pdf,來改輸出pdf的位置,改到media/ 底下
在根目錄建立 media/資料夾
目錄結構
<projectName>/
----manage.py
----<projectName>/
--------__init__.py
--------settings.py
----main/
----venv/
----lib/
----media/
在<projectName>/settings.py加上
...
MEDIA_URL = '/media/'
MEDIA_ROOT = 'media'
<projectName>/urls.py
加上 staic 那段
urlpatterns = [
path('admin/', admin.site.urls),
path('', include("main.urls")),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
main/views.py
def exportPdfWeather(request):
locationNameList = request.GET.getlist("locationNameList", [])
crawlerWeatherAPI = CrawlerWeatherAPI()
dataDictList = crawlerWeatherAPI.getCrawlerData(locationNameList)
fileName = os.path.join(MEDIA_ROOT, '未來鄉鎮天氣預報.pdf')
pdfWeather = PdfWeather(dataDictList, fileName)
pdfWeather.export()
return JsonResponse({"msg": "success"})
網頁再輸入一次 http://localhost:8000/api/exportPdfWeather/ ,就會在media/看到 未來鄉鎮天氣預報.pdf,點開就會看到 剛剛產生的pdf檔案
在網頁輸入 http://127.0.0.1:8000/media/未來鄉鎮天氣預報.pdf ,就會看到pdf 的內容了。
參考資料: